#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../config/environment'

require 'downloader.rb'
require 'scrapers.rb'


def nuevas(conexion)
  foro = Foro.find(1)

  foroExtranjeras = conexion.leer_pagina foro.direccion
  puts "Foro Extranjeras -> Bytes leidos: #{conexion.trafico}"

  temas = Foro_Tusseries.scrape foroExtranjeras

  puts "Temas encontrados: #{temas.size}"

  temas = temas.select { |tema| ! tema.enlace.nil? }

  temas.each do |tema|
    direccion = tema.enlace
    puts "Leyendo direccion: #{direccion}"
    contenidoTema = conexion.leer_pagina direccion
    titulo = Titulo.scrape contenidoTema
    puts "Tema '#{titulo}' Direccion '#{direccion}' Ultima Actualizacion '#{tema.ultima_actalizacion}'-> Bytes leidos: #{conexion.trafico}"
    elinks = Elinks.scrape contenidoTema
    puts "Elinks: #{elinks.size}"
    elinks.each do |elink|
      puts "- #{elink}"
    end
  end
end


def actualizar_indice(conexion)
  indiceForo = conexion.leer_pagina "/index.php?showtopic=10936"

  File.open("indice.html", "w") do |fichero|
    fichero << indiceForo
  end

  puts "indice -> Bytes leidos: #{conexion.trafico}"

  temas = IndiceForo_Tusseries.scrape indiceForo
  puts "temas antes de filtrar: #{temas.size}"
  temas = temas.select { |tema| (tema =~ /&amp;/).nil? }
  puts "temas despues de filtrar: #{temas.size}"

  i = 1
  temas.each do |enlace|
    #~ puts enlace
    tema = Tema.find_by_direccion enlace
    if tema.nil? or tema.updated_at < 1.day.ago then
      pagina = conexion.leer_pagina enlace
      titulo = Titulo.scrape pagina
      puts "\n#{i} #{enlace}: #{titulo} -> Bytes leidos: #{conexion.trafico}\n"
      nuevo_tema = Tema.create :titulo => titulo, :direccion => enlace, :foro_id => 1
      elinks = Elinks.scrape pagina

      if ! elinks.nil? then
        elinks.each do |elink|
          if ! Elink.find_by_elink elink then
            puts elink
            begin
              Elink.create :elink => elink, :tema_id => nuevo_tema.id
            rescue
              next
            end
          end
        end
      end
    end

    i += 1
  end
end


sitio = Sitio.find(1)

conexion = Downloader.new(sitio.servidor, sitio.pagina_inicio, sitio.datos_validacion)
puts "Inicializacion -> Bytes leidos: #{conexion.trafico}"

actualizar_indice conexion
#~ nuevas conexion

puts "Fin -> Bytes leidos: #{conexion.trafico}"
